/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.gemom.combinationItems;

import com.gemom.*;

import java.util.*;
/**
 *
 * @author Yair D
 */
public class BidPreProcessor {

    Vector<Bid> listBids;

    public BidPreProcessor(Vector<Bid> listCandBids, Item[] itemsArray)
    {
/*
        //randomising listBids vector
       Random ran= new Random();
       Vector<Bid> listBidsTemp =new Vector<Bid>();
       Vector<Bid> listCandBidscopy = (Vector<Bid>)listCandBids.clone();
       while(!listCandBidscopy.isEmpty())
       {   int index=ran.nextInt(listCandBidscopy.size());
           listBidsTemp.add(listCandBidscopy.get(index));
           listCandBidscopy.removeElement(listCandBidscopy.get(index));
       }
       listCandBids=listBidsTemp;
       ///////////////////////////////end randomisation
*/
        

      //Generating the bids
        listBids = new Vector<Bid>();    
        Vector<Bid> temp = new Vector<Bid>();
        Bid first;
        Random r= new Random();
        while(!listCandBids.isEmpty())
        {
            first =listCandBids.firstElement();
            listCandBids.removeElement(listCandBids.firstElement());

            for(int i=0;i<listCandBids.size();i++)
            {
               if(first.getItemsVec().size()==listCandBids.get(i).getItemsVec().size())
                {
                 int itemcount=0;
                 for(int k=0;k<first.getItemsVec().size();k++)
                     if(first.getItemsVec().get(k).equals(listCandBids.get(i).getItemsVec().get(k)))
                          itemcount++;
                 if(itemcount==first.getItemsVec().size())temp.add(listCandBids.get(i));
                }
            }
            for(int i=0;i<temp.size();i++)listCandBids.remove(temp.get(i));


            for(int i=0;i<temp.size();i++)
            {
                if(first.price<temp.get(i).price) first=temp.get(i);

                if(first.price==temp.get(i).price)
                    if(r.nextBoolean())
                        first=temp.get(i);
            }

            listBids.add(first);
             temp.removeAllElements();
        }//end of while loop
        


        //adding dummy bids
		int[]check=new int[itemsArray.length];
		for(int i=0;i<check.length;i++)check[i]=0;

		for(int j=0;j<listBids.size();j++){
			if(listBids.get(j).getItemsVec().size()==1)
				check[listBids.get(j).getItemsVec().get(0).getItemID()]=1;}


			for(int i=0;i<check.length;i++){
			if(check[i]==0){listBids.add(new Bid(listBids.size()+1+i));
				            listBids.lastElement().addItem(itemsArray[i]);}
				            }

         //////////////////////////////////////////////////////////////////////





    }

     public  Vector<Bid> getlistFinalBids(){return listBids;}

}
